iT邦幫忙

2022 iThome 鐵人賽

DAY 7
0
Software Development

大學耍廢的我要學Java翻身系列 第 7

Day7: Java的因果輪迴--控制敘述

  • 分享至 

  • xImage
  •  

今天要說啥

今天要學的是Java 如何去控制我們的Java程式
有時會因應需求改變程式執行的方向,就稱為選擇結構
有時則是某些程式片段需要重複執行很多次,就稱為重複結構
然而我們的選擇結構和重複結構需要透過各種控制敘述去達成
我們Java的控制敘述大致上分成三種 => 選擇敘述、重複敘述、分支敘述

選擇敘述 => if、switch

if的使用形式:單向、雙向、多重判斷和巢狀

if => 放條件、else => 排除條件之外的選項

單向式 => 只用一個if

double h = 178.9;
if(h > 170){
    System.out.println("好高ㄟ");
}

雙向式 => if and else

Scanner scn = new Scanner(System.in);
int avg = 5;
int num = scn.nextInt();
if (num >= avg) {
    System.out.println("讚喔!!");
} else {
    System.out.println("加油~");
}

多重判斷式 => if、else if and else

Scanner scn = new Scanner(System.in);
int secret = 55;
int guess = scn.nextInt();
if (guess > secret){
    System.out.println("lower");
} else if(guess < secret){
    System.out.println("higher");
} else {
    System.out.println("Great!!");
}

巢狀式 => if裡面有if

Scanner scn = new Scanner(System.in);
int num1, num2, num3, max;
System.out.println("請輸入三個數: ");
num1 = scn.nextInt();
num2 = scn.nextInt();
num3 = scn.nextInt();
if(num1 > num2){
    if (num1 > num3){
        max = num1;
    }else {
        max = num3;
    }
} else {
    if (num2 > num3){
        max = num2;
    } else {
        max = num3;
    }
}
System.out.println("Max is " + max);

switch的使用形式 => switch case

switch的case符合就會執行,如果有放break就會結束,沒有break就會一直執行下去

Scanner scn = new Scanner(System.in);
System.out.print("Your Grade: ");
int score = scn.nextInt();
int level = score / 10;
switch (level) {
    case 10:
    case 9:
    case 8:
        System.out.print(" => A");
        break;
    case 7:
        System.out.print(" => B");
        break;
    case 6:
        System.out.print(" => C");
        break;
    default:
        System.out.print(" => F");
}

Java 新寫法

可以用 -> 取代 :

int num = 3;
String numString = switch (num){
    case 1 -> "一";
    case 2 -> "二";
    case 3 -> "三";
    case 4 -> "四";
    default -> "錯誤";
};
System.out.println(numString);

重複敘述 => for、while、do~while

以上幾個功能就是符合條件的狀況下,能夠去重複執行相同Java程式

for用法: for(宣告迴圈控制變數; 判斷條件; 變更控制變數的值)

單層for

int sum = 0;
for (int i = 1; i <= 10; i++){
    sum += i;
}
System.out.println("1 + 2 + 3 + ... + 10 = " + sum);

巢狀for:for中有for

int sum = 0;
for (int i = 1; i < 10; i++){
    for(int j = 1; j < 10; j++){
        System.out.print(j + " * " + i + " = " +i * j + "\t");
    }
    System.out.println();
}

while用法:while(判斷條件)

單層while

int sum = 10;
int count = 0;
while(sum > 0){
    sum /= 3;
    count += 1;
}
System.out.println("跑了幾次while: " + count);

巢狀while

int sum = 20;
int count1 = 0;
int count2 = 0;
while(sum > 0){
    sum -= 5;
    while(sum > 5){
        sum -= 3;
        count2 += 1;
    }
    count1 += 1;
}
System.out.println("跑了幾次外層while: " + count1);
System.out.println("跑了幾次內層while: " + count2);

do~while用法 do{要做的事}while(判斷條件)

和while差異的地方是
while是先判斷條件再去做
do~while則是先做了再去判斷條件
所以do~while至少會執行一次

Scanner scn = new Scanner(System.in);
int num1 = scn.nextInt();
int num2 = scn.nextInt();
String func;
System.out.println("*****選單*****");
System.out.println("\tA: 加法");
System.out.println("\tB: 減法");
System.out.println("\tC: 離開");
do{
    func = scn.next().toUpperCase();
    switch (func){
        case "A" -> System.out.println("num1 + num2 = " + (num1+num2));
        case "B" -> System.out.println("num1 - num2 = " + (num1-num2));
    }
}while(!func.equals("C"));

分支敘述 => break、continue、return

break => 執行到break就會終止迴圈,跳到整個迴圈後的下一行

for (int i = 0; i < 10; i++){
    System.out.println(i);
    if (i == 5){
        break;
    }
}

continue => 略過條件成立的迴圈,跳到下一個判斷條件繼續執行

for (int i = 0; i < 10; i++){
    System.out.println(i);
    if (i == 5){
        continue;
    }
}

return => 再未來學到的函式中可以直接中止函式


上一篇
Day6: 運算補充+資料型別轉換
下一篇
Day8: Java的陣列
系列文
大學耍廢的我要學Java翻身30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言